import http from '@/utils/request'
import { AxiosPromise } from 'axios'

// 优惠券活动相关接口定义
export interface CouponActivityItem {
  activityId: number // 活动ID
  activityName: string // 活动名称
  activityIntroduce: string // 活动介绍
  activityStartTime: string // 活动开始时间
  activityEndTime: string // 活动结束时间
  signStartTime: string // 报名开始时间
  signEndTime: string // 报名结束时间
  ifBond: number // 是否需要保证金 0-不需要 1-需要
  bondMoney: number // 保证金金额
  activityLabel: string // 活动标签
  discountMode: number // 优惠方式 1-满减 2-优惠券
  discountProgramme: number // 优惠方案 1-叠加优惠 2-阶梯优惠
  image: string // 活动图片
  state: number // 活动状态 0-报名未开始 1-报名进行中 2-活动待开始 3-活动进行中 4-活动已结束
  shopNumber: number // 商家数
  productNumber: number // 商品数量
  promotionDetail: PromotionDetailItem[] // 优惠详情
}

export interface PromotionDetailItem {
  fullMoney: number // 满金额
  reduceMoney: number // 减金额
}

export interface CouponActivityListParams {
  activityName?: string // 活动名称
  state?: string // 活动状态
  discountMode?: string // 优惠方式
  page: number // 页码
  pageSize: number // 每页数量
}

export interface CouponActivityListResponse {
  list: CouponActivityItem[]
  total: number
}

// 平台优惠券活动管理查询
export function getCouponData(data: CouponActivityListParams): AxiosPromise<{
  code: string
  data: CouponActivityListResponse
}> {
  return http.post({
    url: '/activity/getAll',
    data
  })
}

// 营销活动详情查询
export function getCouponDetail(data: { activityId: number }): AxiosPromise<{
  code: string
  data: CouponActivityItem
}> {
  return http.post({
    url: '/activity/getById',
    data
  })
}

// 添加营销活动
export function addCoupon(data: Partial<CouponActivityItem>): AxiosPromise<{
  code: string
  data: any
}> {
  return http.post({
    url: '/activity/save',
    data
  })
}

// 修改营销活动
export function editCoupon(data: Partial<CouponActivityItem> & { id: number }): AxiosPromise<{
  code: string
  data: any
}> {
  return http.post({
    url: '/activity/update',
    data
  })
}

// 结束营销活动
export function endCoupon(data: { activityId: number }): AxiosPromise<{
  code: string
  data: any
}> {
  return http.post({
    url: '/activity/end',
    data
  })
}

// 删除营销活动
export function delCoupon(data: { activityId: number }): AxiosPromise<{
  code: string
  data: any
}> {
  return http.post({
    url: '/activity/delete',
    data
  })
}

// 参与店铺数据管理查询
export function getCouponShops(data: any): AxiosPromise<{
  code: string
  data: any
}> {
  return http.post({
    url: '/activity/getShops',
    data
  })
}

// 导出数据
export function exportCouponData(data: any = {}): AxiosPromise<Blob> {
  return http.post({
    url: '/activity/excel_shop_detail',
    data,
    responseType: 'blob'
  })
}